#lang racket

(require "stream-basics.rkt")

(define sum 0)

(define (accum x)
  (set! sum (+ x sum))
  sum)

(define seq (stream-map accum (stream-enumerate-interval 1 20)))
;1
(display "\n")
(display sum)
(display "\n")

(define y (stream-filter even? seq))
;6
(display "\n")
(display sum)
(display "\n")

(define z (stream-filter (lambda (x) (= (remainder x 5) 0))
                         seq))
;10
(display "\n")
(display sum)
(display "\n")

(stream-ref y 7)
;136
(display "\n")
(display sum)
(display "\n")

(display-stream z)
;210
(display "\n")
(display sum)
(display "\n")
